#!/usr/bin/python3

import os
import sys
import random
import string
import time
import json
from urllib.parse import parse_qs


def gen_sid():
    """ 生成随机字符串，作为session id """
    l = 40
    m = string.digits + string.ascii_letters
    chars = [random.choice(m) for x in range(l)]
    return ''.join(chars)


def set_session_data(sid, username):
    """ 设置session数据
    
    session数据中包含了登录的用户名，和过期时间。
    session数据保存到服务器的文件系统中指定的目录下，
    文件名就是session id。
    """
    # 当前时间的秒数，加上一天总共的秒数86400秒，
    # 就可以的出有效期为一天的过期时间

    now = int(time.time())
    session_data = {'username': username,
                    'expire': now + expire}
    text = json.dumps(session_data)

    # 首先要确保存放cookie的目录存在
    os.makedirs(session_dir, mode=0o755, exist_ok=True)

    # 因为所有的session数据统一存放到一个目录中，
    # 这里就把该目录的路径和session id串联起来，
    # 作为session文件的路径。
    session_file = os.path.join(session_dir, sid)

    ofile = open(session_file, 'w')
    ofile.write(text)
    ofile.close()


expire = 86400
session_dir = '/tmp/.session_data'

data = sys.stdin.read()
post_data = parse_qs(data)

username = post_data['username'][0]
password = post_data['password'][0]

if username == 'alice' and password == 'abc':
    sid = gen_sid()
    set_session_data(sid, username=username)
    print('Set-Cookie: sessionid=%s' % sid)
    print('Status: 302')
    print('Location: /cgi/inbox')

print('Content-Type: text/plain\n\n', end='')
